package com.ruoyi.cm.domain.bo;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.ruoyi.cm.domain.CmBsContractInfoScene;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;

import java.util.Date;

import java.math.BigDecimal;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 合同管理业务对象 cm_bs_contract_info
 *
 * @author zyb
 * @date 2024-09-27
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class CmBsContractInfoBo extends BaseEntity {

    /**
     * 合同id
     */
    @NotNull(message = "合同id不能为空", groups = { EditGroup.class })
    private Long contractId;

    /**
     * 所属项目id
     */
    @NotNull(message = "所属项目id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long projectId;

    /**
     * 所属标段id
     */
    @NotNull(message = "所属标段id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long bdId;

    /**
     * 合同编号
     */
    //@NotBlank(message = "合同编号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String contractNum;

    /**
     * 合同类型
     */
    //@NotBlank(message = "合同类型不能为空", groups = { AddGroup.class, EditGroup.class })
    private String contractType;

    /**
     * 合同名称
     */
    //@NotBlank(message = "合同名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String contractName;

    /**
     * 签订时间
     */
    //@NotNull(message = "签订时间不能为空", groups = { AddGroup.class, EditGroup.class })
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
    private Date signDate;

    /**
     * 容量
     */
    //@NotNull(message = "容量不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal rongliang;

    /**
     * 单价
     */
    //@NotNull(message = "单价不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal danjia;



    private String scene1;
    private String scene2;
    private String scene3;
    /**
     * 容量
     */

    private BigDecimal rongliang1;
    /**
     * 单价
     */
    private BigDecimal danjia1;
    /**
     * 容量
     */
    private BigDecimal rongliang2;
    /**
     * 单价
     */
    private BigDecimal danjia2;
    /**
     * 容量
     */
    private BigDecimal rongliang3;
    /**
     * 单价
     */
    private BigDecimal danjia3;
    /**
     * 合同金额
     */
    //@NotNull(message = "合同金额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal contractAmount;

    private BigDecimal chgContractAmount;

    /**
     * 甲方id(fk:dept表)
     */
    //@NotNull(message = "甲方id(fk:dept表)不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long partADeptId;

    /**
     * 甲方单位名称(冗余)
     */
    //@NotBlank(message = "甲方单位名称(冗余)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String partAName;

    /**
     * 乙方id(fk:dept表)
     */
    //@NotNull(message = "乙方id(fk:dept表)不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long partBDeptId;

    /**
     * 乙方单位名称(冗余)
     */
    //@NotBlank(message = "乙方单位名称(冗余)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String partBName;

    /**
     * 支付状态
     */
    //@NotBlank(message = "支付状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private String payStatus;

    /**
     * 审批状态
     */
    //@NotBlank(message = "审批状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private String approvalStatus;
    //变更审批状态
    private String chgApprovalStatus;

    /**
     * 开始时间
     */
    //@NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
    private Date beginDate;

    /**
     * 结束时间
     */
    //@NotNull(message = "结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
    private Date endDate;

    /**
     * 扣除奖励基金比例
     */
    //@NotNull(message = "扣除奖励基金比例不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal kcjljjbl;

    /**
     * 开工预付款比例
     */
    //@NotNull(message = "开工预付款比例不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal kgyfkbl;

    /**
     * 合同备注
     */
    //@NotBlank(message = "合同备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String remark;

    private List<CmBsContractInfoScene> sceneList;

    private String procInsId; // 流程实例id
    private String chgProcInsId; // 变更流程实例id

}
